TiDB Cloud Dedicatedのスケールアップ、スケールアウトをやってみた
ゲームソリューション部の えがわ です。
本記事は「ゲーソル・ギョーソル Advent Calendar 2024」の17日目のエントリとして、TiDB Cloud Dedicatedのスケールアップ、スケールアウトについて確認してみます。
環境
- TiDB Cloud Dedicated: 8.1.1
- Kong Insomnia(リクエスト定期実行用)
やってみる
スケールアップやスケールアウト時の挙動も確認するため、常にサンプルアプリケーションからリクエストを実行しておきます。
サンプルアプリケーション(TODOアプリ)をローカル環境で起動し、データベースをTiDB Cloud Dedicatedにしています。
APIクライアントツールとしてKong Insomniaを使用して、一定間隔でリクエストを行います。
※TODOを格納するテーブルのIDにはオートインクリメントが設定されています。
スケールの変更方法
変更方法は「・・・」を押下しModify
を選択します。
変更はGUIで変更することが可能です。
スケールアップ+アウト
各コンポーネントのスペックと数を変更します。
項目 | 変更前 | 変更後 |
---|---|---|
TiDB | 4vCPU 16GiB x 1 | 8vCPU 16GiB x 2 |
TiKV | 4vCPU 16GiB x 3 | 8vCPU 32GiB x 3 |
変更途中ですが、一定間隔でリクエストしてみます。
左がTiDBのコンソール画面、中央右側がAPIクライアントツールの画面です。
問題なくリクエストが行えており、IDが単調増加しているのがわかります。
さらに、TiDBノードが1台完了した状態で一定間隔でリクエストしてみます。
IDが30,000台になっています。
これはオートインクリメントの範囲をTiDBノードがキャッシュしているためです。
TiDBノードのスケールアウトに伴い0~30,000までの範囲が失われ、30,001~採番が始まっています。
TiDBのオートインクリメントに関しては以下をご確認ください。
TiDBノードの変更が完了した状態でも一定間隔でリクエストしてみます。
IDが30,000台、60,000台となっています。
これも上記と同様にTiDBノード毎にID範囲をキャッシュしているためです。
スケーリング時間
先ほど行ったスケールアップ+アウトの時間を計測してみます。
項目 | 変更前 | 変更後 |
---|---|---|
TiDB | 4vCPU 16GiB x 1 | 8vCPU 16GiB x 2 |
TiKV | 4vCPU 16GiB x 3 | 8vCPU 32GiB x 3 |
17分ほどかかりました。
参考としてさらにスケールアウトしてみます。
項目 | 変更前 | 変更後 |
---|---|---|
TiDB | 8vCPU 16GiB x 2 | 8vCPU 16GiB x 3 |
TiKV | 8vCPU 32GiB x 3 | 8vCPU 32GiB x 6 |
3分ほどで完了しました。
追加するノード数にもよりますが、スケールアウトだけであれば短時間で完了することが可能です。
さいごに
TiDB Dedicatedのスケールアップ、スケールアウトについて確認してみました。
各ノードのスペックを変更しても、ダウンタイムが発生しないため気軽に変更を行えます。
この記事がどなたかの参考になれば幸いです。